div関数とldiv関数は、整数型の割り算の商と余りを求めます。div関数はint型、ldiv関数はlong int型の割り算です。
C言語の場合、整数型の割り算の商は/演算子で、余りは%演算子で求めることができますので、通常はこれらの演算子を使った方がよいでしょう。
#include <stdlib.h>
div_t div(int numerator, int denominator);
ldiv_t ldiv(long numerator, long denominator);
numeratorは被除数(割られる方の値)を指定します。
denominatorは除数(割る方の値)を指定します。
戻り値として、div_t又は、ldiv_t構造体が返り、この中のquotメンバ(商)とremメンバ(余り)に結果が入っています。quot×denominator+rem=numeratorの関係になります。
プログラム 例
#include <stdio.h>
#include <stdlib.h>
/* 列数 */
#define ROW_MAX 10
int main(void)
{
int num;
div_t res;
for (num = 1; num <= 50; ++num) {
printf('%3d', num);
res = div(num, ROW_MAX);
if (res.rem == 0) {
printf('\n'); /* 改行 */
}
}
return 0;
}
例の実行結果
$ ./xdiv.exe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 $